For this week we learned how to do electronic production on our local FAB Lab. Some of the antique ways to produce a PCB would involved hazardous materials and chemicals during the process that could potentially pollute the ecosystem unless a safe chemical disposal is available. Our goal is to create our own PCB by using machining with a Mini-mill to carve the following path
To add a new challenge to this assignment, I decided to modify the PCB to make it circular and to add my name. For this I needed to edit the png file. The software I used was Inkscape, where I uploaded the original file and created a circle around it. Once the circle was created, I added my name (ALEX) to the bottom part of the PCB to add a little personalization. A big critical point to take into account is the DPI the milling machine will use to match it at the export.
To create the tool-path for the PCB I used the following website provided by the FAB Academy. MODS CE where we need to create a file that could be read by the machine. To do this, we follow the following steps:
Once we have the G-code program open a node based program will be available to us. In this program we need to add all the parameters of our mini-mill
After all this, we will get a new file with an extension .rml that will be used on our milling machine controlling software
To start milling the PCB, I needed to get the engraving tool to the bottom left corner and used a paper to make sure my zero was just above the surface. Once the paper was fixed between the tool and the plaque, just .02 mm was added to set the new zero.
After the zero was set, I started the cut proces, and the milling machine automatically started to carve the traces. It took around 10-15 min the whole process of tracing.
To have the outer rim cut, the same process was done with the mods CE software, but instead of trace, it was selected “mill outline (1/32)”. During this process, the speed I provided was not adequate for the circular geometry, which lead to two tool being damaged (Sorry FAB Lab Puebla). How ever to compensate for the high speed and geometry a thicher more resistent end mill was used, therofore, third is charm and had a successful outline cut
The final step for the this assignment was to solder all the components from the following list to the PCB. All the components where superficial which was a new challenge to myself as it was the first time I did this type of soldering.
Quantity | Component |
---|---|
1 | Seeed Studio XIAO SAMD21 |
3 | LED SMD 3518 |
4 | 1 K Ohm resistance |
1 | 2K Ohm resistance |
For the soldering a traditional style was used with soldering iron and tin. During the process I committed a few mistakes that required to desolder but there was no major damage to the components nor PCB. To fix this, I needed to take out the pins on the left bottom by applying some heat with the soldering iron and replacethem on the propper track of cupper. This process only took a few secnds, however due to the heat it can be seen a darker spot around the area as a result. This damage did not compromise the useability of the PCB.
To test that the PCB was successfully done, the Xiao was programmed with a simple blink program. using the Arduino IDE .
Before I could do any programming I needed to install the proper library for the Xiao Seed. This can be done by following this tutorial
To program the Xiao we only needed to use the following program:
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(D1, INPUT);
pinMode(26, OUTPUT);
digitalWrite(26, HIGH);
pinMode(D7, OUTPUT);
digitalWrite(26, HIGH);
pinMode(D6, OUTPUT);
digitalWrite(26, HIGH);
//pinMode(PIN_LED_R, OUTPUT);
//pinMode(PIN_LED_G, OUTPUT);
//pinMode(PIN_LED_B, OUTPUT);
//digitalWrite(PIN_LED_R, HIGH);
//digitalWrite(PIN_LED_G, HIGH);
//digitalWrite(PIN_LED_B, HIGH);
}
// the loop function runs over and over again forever
void loop() {
/*digitalWrite(PIN_LED_B, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(PIN_LED_B, LOW); // turn the LED off by making the voltage LOW
delay(1000);*/ // wait for a second
digitalWrite(26, digitalRead(D1)); // turn the LED on (HIGH is the voltage level)
digitalWrite(D6, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(D7, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(26, LOW); // turn the LED off by making the voltage LOW
digitalWrite(D6, LOW); // turn the LED off by making the voltage LOW
digitalWrite(D7, LOW); // turn the LED off by making the voltage LOW
delay(1000);
}
Once the program was uploaded to the board 2 led started to blink and a third one could be activated by pressing a switch, this specific programm helped me to make sure everything was soldered properly